package com.jcode.skeleton.web;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice;

/**
 * Controller的jsonp支持,增强{@code @ResponseBody}输出判断 <br/>
 * 
 * 参考:http://blog.csdn.net/f529352479/article/details/51909095 <br/>
 * 
 * 说明：<br/>
 * 1、继承的{@code AbstractJsonpResponseBodyAdvice }
 * 只支持jackson的json序列化框架，如果换用其他json框架还使用类似增强，需要自行实现{@code ResponseBodyAdvice}
 * 再继承过来 <br/>
 * 2、如果使用序列化框架的{@code JSONPObject }作为Controller方法的返回对象，将只支持jsonp的形式，不灵活，故使用该增强功能
 * 
 * @author Administrator
 */
@ControllerAdvice
// Controller增强处理
public class ControllerJsonpSupport extends AbstractJsonpResponseBodyAdvice {

	/**
	 * 请求参数包含callback或jsoncallback则使用jsonp形式响应，未包含则json形式响应 <br/>
	 * 尼玛，人家都考虑到了jsonp的参数名可能多个但值都一样的情况，内部任意取出一个jsonp参数即完成
	 */
	public ControllerJsonpSupport() {
		super("callback", "jsoncallback");
	}

}
